package com.backend.system.service;

import com.backend.system.beans.role.*;
import com.backend.system.common.PageBean;
import com.backend.system.dao.entity.Role;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author backend-manage
 * @since 2024-04-02
 */
public interface IRoleService extends IService<Role> {

    /**
     * 通过用户ID查角色列表
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<Role> getRolesByUserId(Long userId);

    /**
     * 查询所有角色
     *
     * @return 响应
     */
    List<RoleQueryAllVO> listAll();

    /**
     * 查询指定用户的所有角色（含已分配，未分配）
     *
     * @param req 请求入参
     * @return 响应
     */
    List<RoleQueryAllByUserVO> listAllByUser(RoleQueryAllByUserReq req);

    /**
     * 通过菜单ID查寻当前菜单未拥有的角色
     *
     * @param menuId 菜单ID
     * @return 角色列表
     */
    List<Role> getRolesByMenuHasNot(Long menuId);

    /**
     * 分页查询所有角色
     *
     * @param req 请求入参
     * @return 响应
     */
    PageBean<RoleQueryVO> listByPage(RoleQueryReq req);
}
